Java abstract vs default method